package com.Shuang.Recursion2;

import java.io.File;

//删除文件夹操作
public class DeleteDirectory {
    public static void main(String[] args) {
        File file = new File("D:\\秘密");
        deleteDir(file);
    }

    public static void deleteDir(File dir){
        //1 判断文件夹存不存在，能不能取到
        if (dir == null || !dir.exists()){
            return;
        }

        //2 判断是不是文件，如果是文件直接删除
        if (dir.isFile()){
            dir.delete();
            return;
        }

        //3 dir 存在且是文件夹
        //4 首先判断文件夹是不是空的，如果是空的直接删除
        File[] files = dir.listFiles();  //拿到文件夹下的所有一级文件对象
        //先判断能不能拿到一级文件对象，拿不到不能删除直接返回
        if (files == null){
            return;
        }

//        if (files.length == 0){
//            //说明没有一级文件对象，即文件夹是空的直接删除
//            dir.delete();
//            return;
//        }  这个不需要了，因为最后会把自己删除掉

        //5 说明文件夹不是空的，并且拿到了全部一级文件对象,遍历所有一级文件对象,先删除里面的内容，再把自己也删了
        for (File file : files) {
            //6 判断当前文件对象是不是文件或者文件夹，文件直接删，如果是文件夹重复上面的过程
            if (file.isFile()){
                file.delete();
            }else {
                deleteDir(file);
            }
        }
        // 最后要把自己也删了
        dir.delete();
    }
}
